package com.xbts.system.service.impl;

import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xbts.common.constant.UserConstants;
import com.xbts.common.core.domain.model.LoginUser;
import com.xbts.common.exception.ServiceException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.xbts.system.mapper.CnNewsTypeMapper;
import com.xbts.system.domain.CnNewsType;
import com.xbts.system.service.ICnNewsTypeService;
import com.xbts.common.utils.DateUtils;
import com.xbts.common.utils.SecurityUtils;

/**
 * 新闻类型Service业务层处理
 * 
 * @author xbts
 * @date 2023-09-05
 */
@Service
public class CnNewsTypeServiceImpl  extends ServiceImpl<CnNewsTypeMapper, CnNewsType> implements ICnNewsTypeService {

    /**
     * 查询新闻类型列表
     *
     * @param cnNewsType 新闻类型
     * @return 新闻类型
     */
    @Override
    public List<CnNewsType> selectCnNewsTypeList(CnNewsType cnNewsType) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        if (!loginUser.getUser().getUserType().equals(UserConstants.USER_TYPE_MANAGER)) {
            throw new ServiceException("非管理人员不可操作");
        }
        QueryWrapper<CnNewsType> queryWrapper = cnNewsType.queryWrapper();
        return list(queryWrapper);
    }

    /**
     * 查询新闻类型
     *
     * @param newsTypeId 新闻类型主键
     * @return 新闻类型
     */
    @Override
    public CnNewsType selectCnNewsTypeByNewsTypeId(String newsTypeId) {
        return getById(newsTypeId);
    }

    /**
     * 新增新闻类型
     *
     * @param cnNewsType 新闻类型
     * @return 结果
     */
    @Override
    public boolean insertCnNewsType(CnNewsType cnNewsType) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        if (!loginUser.getUser().getUserType().equals(UserConstants.USER_TYPE_MANAGER)) {
            throw new ServiceException("非管理人员不可操作");
        }
        cnNewsType.setCreateBy(SecurityUtils.getUserId().toString());
        return save(cnNewsType);
    }

    /**
     * 修改新闻类型
     *
     * @param cnNewsType 新闻类型
     * @return 结果
     */
    @Override
    public boolean updateCnNewsType(CnNewsType cnNewsType) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        if (!loginUser.getUser().getUserType().equals(UserConstants.USER_TYPE_MANAGER)) {
            throw new ServiceException("非管理人员不可操作");
        }
        cnNewsType.setUpdateBy(SecurityUtils.getUserId().toString());
        cnNewsType.setUpdateTime(DateUtils.getNowDate());
        return updateById(cnNewsType);
    }

    /**
     * 批量删除新闻类型
     *
     * @param newsTypeIds 需要删除的新闻类型主键
     * @return 结果
     */
    @Override
    public boolean deleteCnNewsTypeByNewsTypeIds(List<String> newsTypeIds) {
        return removeBatchByIds(newsTypeIds);
    }

    /**
     * 删除新闻类型信息
     *
     * @param newsTypeId 新闻类型主键
     * @return 结果
     */
    @Transactional
    @Override
    public boolean deleteCnNewsTypeByNewsTypeId(String newsTypeId) {
      return removeById(newsTypeId);
    }

}
